'use strict';

const Controller = require('egg').Controller;


class ArticleController extends Controller {


  // 获取文章列表 带用户搜索记录
  async getArticle() {
    const { ctx } = this;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getArticle(ctx.request.query);
    if (!res) { return ctx.helper.error('查询失败', 500); }
    res.list.length ? ctx.helper.success('获取文章列表成功', res) : ctx.helper.success('未查询到相关文章');
  }
  // 获取热门文章
  async getHotArticle() {
    const { ctx } = this;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getHotArticle(ctx.request.query);
    res.list.length ? ctx.helper.success('获取热门文章成功', res) : ctx.helper.success('未获取到热门文章', res);
  }
  // 获取用户发布的文章列表 根据用户id
  async getUserArticleList() {
    const { ctx } = this;
    ctx.request.query.user_id = ctx.params.user_id;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getArticle(ctx.request.query);
    if (!res) { ctx.helper.error('查询失败', 500); }
    res.list.length ? ctx.helper.success('获取用户文章列表成功', res) : ctx.helper.success('未查询到相关文章');
  }

  // 获取用户浏览文章历史记录 根据用户id
  async getUserArticleViewHistory() {
    const { ctx } = this;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getUserArticleViewHistory(ctx.params.user_id, ctx.request.query);
    res ? ctx.helper.success('获取用户浏览文章历史记录列表成功', res) : ctx.helper.success('未查询到用户浏览文章历史记录');
  }
  // 根据文章id获取文章信息
  async getArticleById() {
    const { ctx } = this;
    const res = await ctx.service.web.article.getArticleById(ctx.params.id);
    res ? ctx.helper.success('获取成功', res) : ctx.helper.error('获取失败', 400);
  }
  // 新增用户举报文章
  async addReport() {
    const { ctx } = this;
    ctx.request.body.user_id = ctx.state.user.id;
    const res = await ctx.service.web.article.addReport(ctx.request.body);
    if (res.msg) return ctx.helper.error(res.msg, 400);
    res ? ctx.helper.success('您已举报该篇文章，工作人员在24小时内审核出结果', res) : ctx.helper.error('举报失败', 400)
    ;
  }
  // 删除举报的文章 可批量删除
  async destroyReport() {
    const { ctx } = this;
    if (!ctx.request.body.ids) return ctx.helper.error('请选择要删除的选中项');
    const res = await ctx.service.web.article.destroyReport(ctx.request.body);
    res ? ctx.helper.success('删除成功') : ctx.helper.error('删除失败', 400);
  }
  // 获取用户举报文章列表 根据用户id
  async getUserReportList() {
    const { ctx } = this;
    ctx.request.query.user_id = ctx.params.user_id;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getReportList(ctx.request.query);
    if (!res) { ctx.helper.error('查询失败', 500); }
    res.list.length ? ctx.helper.success('获取用户举报文章列表成功', res) : ctx.helper.success('未查询到相关举报');
  }
  // 对文章点赞
  async addArticleLiking() {
    const { ctx } = this;
    const res = await ctx.service.web.article.addArticleLiking(ctx.request.body);
    if (res.msg) return ctx.helper.error(res.msg, 400);
    res ? ctx.helper.success('点赞成功', res) : ctx.helper.error('点赞失败', 400);
  }
  // 获取用户点赞的文章列表 根据用户id
  async getUserLikingList() {
    const { ctx } = this;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getUserLikingList(ctx.params.user_id, ctx.request.query);
    res ? ctx.helper.success('获取列表成功', res) : ctx.helper.error('获取列表失败', 400);
  }
  // 对文章取消点赞
  async destroyArticleLiking() {
    const { ctx } = this;
    const res = await ctx.service.web.article.destroyArticleLiking(ctx.params.article_id);
    res ? ctx.helper.success('取消点赞成功') : ctx.helper.error('取消点赞失败', 400);
  }

  // 根据文章id获取点赞信息 根据文章id判断是否已点赞
  async articleLikingById() {
    const { ctx } = this;
    const res = await ctx.service.web.article.articleLikingById(ctx.params.article_id);
    res ? ctx.helper.success('当前状态已点赞', res) : ctx.helper.success('当前状态未点赞');
  }

  // 收藏文章
  async addCollect() {
    const { ctx } = this;
    const res = await ctx.service.web.article.addCollect(ctx.request.body);
    if (res.msg) return ctx.helper.error(res.msg, 400);
    res ? ctx.helper.success('收藏成功', res) : ctx.helper.error('收藏失败', 400);
  }

  // 获取用户收藏文章列表 根据用户id
  async getUserCollectList() {
    const { ctx } = this;
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.article.getUserCollectList(ctx.params.user_id, ctx.request.query);
    res ? ctx.helper.success('获取用户收藏列表成功', res) : ctx.helper.error('获取用户收藏列表失败', 400);
  }

  // 取消收藏文章
  async destroyCollect() {
    const { ctx } = this;
    const res = await ctx.service.web.article.destroyCollect(ctx.params.article_id);
    res ? ctx.helper.success('取消收藏成功') : ctx.helper.error('取消收藏失败', 400);
  }

  // 根据文章id判断是否已收藏文章
  async CollectById() {
    const { ctx } = this;
    const res = await ctx.service.web.article.CollectById(ctx.params.article_id);
    res ? ctx.helper.success('当前状态已收藏该篇文章', res) : ctx.helper.success('当前状态未收藏该篇文章');
  }


}

module.exports = ArticleController;
